#include <stdio.h>
#include "xx_def.h"



#define    op_cmove            "010101"
#define    op_cmovz            "010101"
#define    op_comvne           "010102"
#define    op_comvnz           "010102"
#define    op_cmova            "010103"
#define    op_cmovnbe          "010103"
#define    op_cmovae           "010104"
#define    op_cmovnb           "010104"
#define    op_cmovbe           "010105"
#define    op_cmovnae          "010105"
#define    op_cmovbe           "010106"
#define    op_cmovna           "010106"
#define    op_cmovg            "010107"
#define    op_cmovnle          "010107"
#define    op_cmovge           "010108"
#define    op_cmovnl           "010108"
#define    op_cmovl            "010109"
#define    op_cmovnge          "010109"
#define    op_cmovle           "01010a"
#define    op_cmovng           "01010a"
#define    op_cmovc            "01010b"
#define    op_cmovnc           "01010c"
#define    op_cmovo            "01010d"
#define    op_cmovno           "01010e"
#define    op_cmovs            "01010f"
#define    op_cmovns           "010110"
#define    op_cmovp            "010111"
#define    op_cmovpe           "010111"
#define    op_cmovnp           "010112"
#define    op_cmovpo           "010112"
#define    op_xchg             "010113"
#define    op_bswap            "010114"
#define    op_xadd             "010115"
#define    op_cmpxchg          "010116"
#define    op_cmpxchg8b        "010117"
#define    op_push             "010118"
#define    op_pop              "010119"
#define    op_pusha            "01011a"
#define    op_pushad           "01011a"
#define    op_popa             "01011b"
#define    op_popad            "01011b"
#define    op_cbw              "01011c"
#define    op_cwde             "01011c"
#define    op_cdqe             "01011c"
#define    op_cwd              "01011d"
#define    op_cdq              "01011d"
#define    op_cqo              "01011d"
#define    op_movsx            "01011e"
#define    op_movzx            "01011f"
#define    op_mov              "010120"

//2
#define    op_adcx          "010201"
#define    op_adox          "010202"
#define    op_add           "010203"
#define    op_adc           "010204"
#define    op_sub           "010205"
#define    op_sbb           "010206"
#define    op_imul          "010207"
#define    op_mul           "010208"
#define    op_idiv          "010209"
#define    op_div           "01020a"
#define    op_inc           "01020b"
#define    op_dec           "01020c"
#define    op_neg           "01020d"
#define    op_cmp           "01020e"
 
  //3
#define    op_daa           "010301"
#define    op_das           "010302"
#define    op_aaa           "010303"
#define    op_aas           "010304"
#define    op_aam           "010305"
#define    op_aad           "010306"
         
         
  //4
#define    op_and           "010401"
#define    op_or            "010402"
#define    op_xor           "010403"
#define    op_not           "010404"
          
  //
#define    op_sar           "010501"
#define    op_shr           "010502"
#define    op_sal           "010503"
#define    op_shl           "010504"
#define    op_shrd          "010505"
#define    op_shld          "010506"
#define    op_ror           "010507"
#define    op_rol           "010508"
#define    op_rcr           "010509"
#define    op_rcl           "01050a"


 //6
#define    op_bt                 "010601"
#define    op_bts                "010602"
#define    op_btr                "010603"
#define    op_btc                "010604"
#define    op_bsf                "010605"
#define    op_bsr                "010606"
#define    op_sete               "010607"
#define    op_setz               "010607"
#define    op_setne              "010608"
#define    op_setnz              "010608"
#define    op_stea               "010609"
#define    op_setnbe             "010609"
#define    op_setae              "01060a"
#define    op_setnb              "01060a"
#define    op_setnc              "01060a"
#define    op_setb               "01060b"
#define    op_setnae             "01060b"
#define    op_setc               "01060b"
#define    op_setbe              "01060c"
#define    op_setna              "01060c"
#define    op_setg               "01060d"
#define    op_setnle             "01060d"
#define    op_setge              "01060e"
#define    op_setnl              "01060e"
#define    op_setl               "01060f"
#define    op_setnge             "01060f"
#define    op_setle              "010610"
#define    op_setng              "010610"
#define    op_sets               "010611"
#define    op_setns              "010612"
#define    op_seto               "010613"
#define    op_setno              "010614"
#define    op_setpe              "010615"
#define    op_setp               "010615"
#define    op_setpo              "010616"
#define    op_setnp              "010616"
#define    op_test               "010617"
#define    op_crc32              "010618"
#define    op_popcnt             "010619"


 //7
#define    op_jmp               "010701"
#define    op_je                "010702"
#define    op_jz                "010702"
#define    op_jne               "010703"
#define    op_jnz               "010703"
#define    op_ja                "010704"
#define    op_jnbe              "010704"
#define    op_jae               "010705"
#define    op_jnb               "010705"
#define    op_jb                "010706"
#define    op_jnae              "010706"
#define    op_jbe               "010707"
#define    op_jna               "010707"
#define    op_jg                "010708"
#define    op_jnle              "010708"
#define    op_jge               "010709"
#define    op_jnl               "010709"
#define    op_jl                "01070a"
#define    op_jnge              "01070a"
#define    op_jle               "01070b"
#define    op_jng               "01070b"
#define    op_jc                "01070c"
#define    op_jnc               "01070d"
#define    op_jo                "01070e"
#define    op_jno               "01070f"
#define    op_js                "010710"
#define    op_jns               "010711"
#define    op_jpo               "010712"
#define    op_jnp               "010712"
#define    op_jpe               "010713"
#define    op_jp                "010713"
#define    op_jcxz              "010714"
#define    op_jecxz             "010714"
#define    op_loop              "010715"
#define    op_loopz             "010716"
#define    op_loope             "010716"
#define    op_loopnz            "010717"
#define    op_loopne            "010717"
#define    op_call              "010718"
#define    op_ret               "010719"
#define    op_iret              "01071a"
#define    op_int               "01071b"
#define    op_into              "01071c"
#define    op_bound             "01071d"
#define    op_enter             "01071e"
#define    op_leave             "01071f"


 //8
#define    op_movs       "010801"
#define    op_movsb      "010801"
#define    op_movs       "010802"
#define    op_movsw      "010802"
#define    op_movs       "010803"
#define    op_movd       "010803"
#define    op_cmps       "010804"
#define    op_cmpsw      "010805"
#define    op_cmps       "010806"
#define    op_cmpsd      "010806"
#define    op_scas       "010807"
#define    op_scasb      "010807"
#define    op_scas       "010808"
#define    op_scasw      "010808"
#define    op_scas       "010809"
#define    op_scasd      "010809"
#define    op_lods       "01080a"
#define    op_lodsb      "01080a"
#define    op_lods       "01080b"
#define    op_lodsw      "01080b"
#define    op_lods       "01080c"
#define    op_lodsd      "01080c"
#define    op_stos       "01080d"
#define    op_stosb      "01080d"
#define    op_stos       "01080e"
#define    op_stosw      "01080e"
#define    op_stos       "01080f"
#define    op_stosd      "01080f"
#define    op_rep        "010810"
#define    op_repe       "010811"
#define    op_repz       "010811"
#define    op_repne      "010812"
#define    op_repnz      "010812"


 //9
#define    op_in       "010901"
#define    op_out      "010902"
#define    op_ins      "010903"
#define    op_insb     "010903"
#define    op_ins      "010904"
#define    op_insw     "010904"
#define    op_ins      "010905"
#define    op_insd     "010905"
#define    op_outs     "010906"
#define    op_outsb    "010906"
#define    op_outs     "010907"
#define    op_outsw    "010907"
#define    op_outs     "010908"
#define    op_outsd    "010908"


 //11
#define    op_stc              "010b01"
#define    op_clc              "010b02"
#define    op_cmc              "010b03"
#define    op_cld              "010b04"
#define    op_std              "010b05"
#define    op_lahf             "010b06"
#define    op_sahf             "010b07"
#define    op_pushf            "010b08"
#define    op_pushfd           "010b08"
#define    op_popf             "010b09"
#define    op_popfd            "010b09"
#define    op_sti              "010b0a"
#define    op_cli              "010b0b"

 //12
#define    op_lds           "010c01"
#define    op_les           "010c02"
#define    op_lfs           "010c03"
#define    op_lgs           "010c04"
#define    op_lss           "010c05"


 //13
#define    op_lea           "010d01"
#define    op_nop           "010d02"
#define    op_ud2           "010d03"
#define    op_xlat          "010d04"
#define    op_xlatb         "010d04"
#define    op_cpuid         "010d05"
#define    op_movbe         "010d06"
#define    op_prefetchw     "010d07"
#define    op_prefetchwt1   "010d08"
#define    op_clflush       "010d09"
#define    op_clflushopt    "010d0a"
#define    op_rdtsc         "010d0b"


 //14
#define    op_xsave         "010e01"
#define    op_xsavec        "010e02"
#define    op_xsaveopt      "010e03"
#define    op_xrstor        "010e04"
#define    op_xgetbv        "010e05"

 //15
#define    op_rdrand        "010f01"
#define    op_rdseed        "010f02"



//操作码定义 16  第二位操作码二级类型定义，第三位操作码子级精确定义
//d8
#define    op_fadd        "011001"
#define    op_fmul        "011002"
#define    op_fcom        "011003"
#define    op_fcomp       "011004"
#define    op_fsub        "011005"
#define    op_fsubr       "011006"
#define    op_fdiv        "011007"
#define    op_fdivr       "011008"

//d9
#define    op_fld        "011009"
#define    op_fst        "01100a"
#define    op_fstp       "01100b"
#define    op_fldenv     "01100c"
#define    op_fldcw      "01100d"
#define    op_fstenv     "01100e"
#define    op_fstcw      "01100f"

#define    op_fld        "011010"
#define    op_fnop       "011011"
#define    op_fchs       "011012"
#define    op_fabs       "011013"
#define    op_ftst       "011014"
#define    op_fxam       "011015"
#define    op_f2xm1      "011016"
#define    op_fyl2x      "011017"
#define    op_fptan      "011018"
#define    op_fpatan     "011019"
#define    op_fxtract    "01101a"
#define    op_fprem1     "01101b"
#define    op_fdecstp    "01101c"
#define    op_fincstp    "01101d"
#define    op_fxch       "01101e"
#define    op_fld1       "01101f"
#define    op_fldl2t     "011020"
#define    op_fldl2e     "011021"
#define    op_fldpi      "011022"
#define    op_fldlg2     "011023"
#define    op_fldln2     "011024"
#define    op_fldz       "011025"
#define    op_fprem      "011026"
#define    op_fyl2xp1    "011027"
#define    op_fsqrt      "011028"
#define    op_fsincos    "011029"
#define    op_frndint    "01102a"
#define    op_fscale     "01102b"
#define    op_fsin       "01102c"
#define    op_fcos       "01102d"





